package com.wdl.networkflow.uv

/**
 * 自定义一个布隆过滤器
 * @param size
 */
class UvCountBloomFilter(size: Long) extends Serializable {

  /** 定义位图的大小，应该是 2 的整次幂 */
  private val cap = size

  /** 实现一个 hash 函数 */
  def hash(str: String, seed: Int): Long = {
    var result = 0
    for (i <- 0 until str.length){
      result = result * seed + str.charAt(i)
    }

    /** 返回一个在 cap 范围内的一个值 */
    (cap - 1) & result
  }

}
